package com.ksd.web.controller.tool;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class FileUtils {
    public static List<File> getAllFiles(String directoryPath) {
        List<File> fileList = new ArrayList<>();
        File directory = new File(directoryPath);
        if (directory.exists() && directory.isDirectory()) {
            File[] files = directory.listFiles();
            if (files != null) {
                for (File file : files) {
                    if (file.isDirectory()) {
                        // 递归获取子目录下的文件
                        fileList.addAll(getAllFiles(file.getAbsolutePath()));
                    } else {
                        fileList.add(file);
                    }
                }
            }
        }
        return fileList;
    }
    /**
     * 将指定文件复制到指定目录下
     *
     * @param sourceFilePath         源文件的路径
     * @param destinationDirectoryPath 目标目录的路径
     */
    public static void copyFileToDirectory(String sourceFilePath, String destinationDirectoryPath) {
        // 创建源文件对象
        File sourceFile = new File(sourceFilePath);
        // 创建目标目录对象
        File destinationDirectory = new File(destinationDirectoryPath);
        System.out.println("源文件地址:"+sourceFile.getAbsolutePath());
        System.out.println("目标文件地址:"+destinationDirectory.getAbsolutePath());

        // 检查源文件是否存在
        if (!sourceFile.exists()) {
            System.out.println("源文件不存在: " + sourceFilePath);
            return;
        }

        // 检查源文件是否为文件
        if (!sourceFile.isFile()) {
            System.out.println("源路径不是一个文件: " + sourceFilePath);
            return;
        }

        // 检查目标目录是否存在，如果不存在则创建
//        if (!destinationDirectory.exists()) {
//            if (destinationDirectory.mkdirs()) {
//                System.out.println("目标目录已创建: " + destinationDirectoryPath);
//            } else {
//                System.out.println("无法创建目标目录: " + destinationDirectoryPath);
//                return;
//            }
//        }

        // 构建目标文件的路径
//        String destinationFilePath = destinationDirectoryPath + File.separator + sourceFile.getName();
        String destinationFilePath = destinationDirectoryPath;
        File destinationFile = new File(destinationFilePath);

        try (FileInputStream fis = new FileInputStream(sourceFile);
             FileOutputStream fos = new FileOutputStream(destinationFile)) {

            byte[] buffer = new byte[1024];
            int bytesRead;

            // 读取源文件内容并写入目标文件
            while ((bytesRead = fis.read(buffer)) != -1) {
                fos.write(buffer, 0, bytesRead);
            }

            System.out.println("文件复制成功，源文件: " + sourceFilePath + " 目标文件: " + destinationFilePath);

        } catch (IOException e) {
            System.err.println("复制文件时出错: " + e.getMessage());
            e.printStackTrace();
        }
    }


}
